#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>

//int main()
//{
//    pid_t id = getpid();
//    pid_t pid = getppid();
//    while(1)
//    {
//        printf("I am a process! pid: %d ppid: %d \n", id, pid);
//        sleep(1);
//    }
//    return 0;
//}
//


//int main()
//{
//    printf("pid: %d\n",getpid());
//    
//    FILE* fun1 = fopen("fun1.txt", "w");
//    if(fun1 == NULL) return 1;
//    printf("更改进程工作目录之前\n");
//    
//    
//
//    sleep(10);
//    chdir("/home/qz");
//    
//    printf("更改进程工作目录之后\n");
//    FILE* f = fopen("110.txt","w");
//    if(f == NULL) return 1;
//
//    fclose(fun1);
//    fclose(f);
//
//    sleep(50);
//    printf("创建文件完毕\n");
//    return 0;
//}
//
//




//int main()
//{
//    printf("before fork : I am a process, pid: %d   ppid: %d \n",getpid(),getppid());
//
//    fork();
//
//    printf("after fork : I am a process, pid: %d   ppid: %d \n",getpid(),getppid());
//
//    return 0;
//}
//
//

//int main()
//{
//    
//    printf("before fork : I am a process, pid: %d   ppid: %d \n",getpid(),getppid());
//
//    sleep(5);
//    printf("开始创建进程啦！\n");
//    sleep(1);
//
//    pid_t id = fork();
//    
//    sleep(1);
//    if(id<0)
//    {
//        perror("fork");
//        return 1;
//    }
//    else if(id == 0)
//    {
//        //子进程i
//        while(1)
//        {
//            printf("after fork : 我是父进程！ I am a process, pid: %d ppid: %d return id: %d\n",getpid(),getppid(),id);
//            sleep(1);
//        }
//    }
//    else 
//    {
//        //父进程
//        while(1)
//        {  
//            printf("after fork : 我是子进程！ I am a process, pid: %d   ppid: %d return id: %d\n",getpid(),getppid(),id);
//            sleep(1);
//        }
//    }
//    return 0;
//}
//



//const int num = 10;
//
//void Worker()
//{
//    int cnt = 12;
//    while(cnt)
//    {
//        printf("child %d is running, cnt: %d\n",getpid(),cnt);
//        cnt--;
//        sleep(1);
//    }
//}
//
//
//int main()
//{
//    for(int i=0;i<num;i++)
//    {
//        pid_t id = fork();
//        if(id<0)break;
//        if(id == 0){
//            //子进程
//            Worker();
//            exit(0);   //让子进程直接退出
//        }
//        printf("father creat process success,child pid: %d\n",id);
//        sleep(1);
//    }
//
//    //只有父进程能执行到这里
//    sleep(10);
//
//
//    return 0;
//}
//
//
//
//下面这段代码用于创建一个进程的代码 这个进程由于
//有printf这种调用硬件的函数，则会导致它的进程生命周期中有90%
//的时间在等待硬件的回应，所以这段代码创建的进程大多数时间处于
// S 状态，即一种睡眠状态，可中断睡眠，即阻塞状态的一种
//int main()
//{
//    while(1)
//    {
//       printf("hello process, pid: %d\n",getpid());
//       sleep(1);
//    }
//    return 0;
//}
//

//int main()
//{
//    pid_t id = fork();
//    if(id == 0){
//        // child
//        fork();
//        int cnt = 500;
//        while(cnt)
//        {
//            printf("I am a child! pid: %d ppid: %d\n",getpid(),getppid());
//            cnt--;
//            sleep(1);
//        }
//        exit(0);//让子进程直接退出
//    }
//    int cnt = 5;
//    //father
//    while(cnt)
//    {
//        cnt--;
//        printf("I am father, pid: %d,ppid: %d\n",getpid(),getppid());
//        sleep(1);
//    }
//    return 0;
//}


//环境变量
//环境变量，不是一个，而是一堆，彼此之间没有关系
//环境变量，一般是系统内置的具有特殊用途的变量
//定义变量的本质是其实是开辟空间
#include<string.h>
#include<stdlib.h>
//main函数时可以带参的
int main()
{
    char *env=getenv("MYENV");
    if(env){
        printf("%s\n",env);
    }
    



 //   printf("Hello world\n");
    return 0;
}





























//int main(int argc, char* argv[], char* env[])
//{
//    
//    //for(int i=0;env[i];i++)
//    //{
//    //    printf(("------------> env[%d]:  %s\n",i,env[i]));
//    //}
//    //return 0;   
//} 
    
    
    //让其同一个指令，执行不同功能的小代码
    //if(argc != 2)
    //{
    //    printf("Uage:\n\t%s -number[1-3]\n",argv[0]);
    //}

    //if(strcmp("-1",argv[1]) == 0)
    //{
    //    printf("function 1\n");
    //}
    //else if(strcmp("-2",argv[1]) == 0)
    //{
    //    printf("function 2\n");
    //}
    //else if(strcmp("-3",argv[1]) == 0)
    //{
    //    printf("function 3\n");
    //}
    //else
    //{
    //    printf("unknown\n");
    //}


    //实现一个计算器
//    if(argc != 4)
//    {
//        printf("Uage:\n\t%s -[add|sub|mul|div] x y-\n",argv[0]);
//    }
//
//    int x = atoi(argv[2]);
//    int y = atoi(argv[3]);
//
//    if(strcmp("-add",argv[1]) == 0)
//    {
//        printf("%d + %d = %d\n",x,y,x+y);
//    }
//    else if(strcmp("-sub",argv[1]) == 0)
//    {
//        printf("%d - %d = %d\n",x,y,x-y);
//    }
//    else if(strcmp("-mul",argv[1]) == 0)
//    {
//        printf("%d * %d = %d/n",x,y,x*y);
//    }
//    else
//    {
//        printf("unknown\n");
//    }
//}








